package _2022.hot100._3_无重复字符的最长子串;

import java.util.HashSet;
import java.util.Set;

/**
 * @author： YHSimon
 * @date： 2022-03-24 15:07
 */
public class Solution {
    //滑动窗口
    public int lengthOfLongestSubstring2(String s) {
        int n=s.length();
        //rk表示右指针，初始值为-1
        int rk=-1,ans=0;
        Set<Character> set=new HashSet<>();
        for (int i=0;i<n;i++){
            if(i!=0){
                //左指针向右移动一格，移除一个字符
                set.remove(s.charAt(i-1));
            }
            while(rk+1<n&&!set.contains(s.charAt(rk+1))){
                //不断地移动右指针
                set.add(s.charAt(rk+1));
                rk++;
            }
            //第i到rk个字符是一个无重复字符子串
            ans=Math.max(ans, rk-i+1);
        }
        return ans;
    }
    //模拟
    public int lengthOfLongestSubstring(String s) {
        if(s.length()==0){
            return 0;
        }
        int n=s.length();
        int res=1;
        for (int i = 0; i < n; i++) {
            Set<Object> set = new HashSet<>();
            int max=1;
            set.add(s.charAt(i));
            for(int j=i+1;j<n;j++){
                if(set.contains(s.charAt(j))){
                    break;
                }
                set.add(s.charAt(j));
                max++;
                res=Math.max(res, max);
            }
        }
        return res;
    }

    public static void main(String[] args) {
        Solution s = new Solution();
        System.out.println(s.lengthOfLongestSubstring("abcabcbb"));

    }
}


